extends Node

var http_request: HTTPRequest
var thread: Thread
var json: JSON  # JSON 解析器实例
var url: String = "https://github.com/shikeik/project-template/releases/download/multiplayergamedemo/official-server.json"
var timer: Timer  # 定时器，用来每 10 秒触发请求

func _ready():
	# 创建 HTTPRequest 实例
	http_request = HTTPRequest.new()
	add_child(http_request)
	
	# 创建 JSON 实例
	json = JSON.new()

	# 创建并启动子线程
	thread = Thread.new()

	# 创建定时器并连接信号
	timer = Timer.new()
	add_child(timer)
	timer.timeout.connect(_on_timer_timeout)
	timer.start(10.0) # 启动定时器，每 10 秒触发一次

	# 启动子线程
	thread.start(_thread_func)  # 启动线程执行 _thread_func 方法

func _on_timer_timeout() -> void:
	pass

func _thread_func(user_data):
	while true:
		# 等待定时器触发
		await timer.timeout  # 等待定时器的超时信号（每 10 秒触发一次）

		# 在子线程中发送 HTTP 请求
		var error = http_request.request(url)
		
		if error != OK:
			print("请求失败:", error)
		else:
			# 等待请求完成
			await http_request.request_completed  # 等待请求完成的信号
		
		# 请求完成后，处理响应数据（主线程执行）
		call_deferred("_handle_request_completed")

# 请求完成后，回调函数
func _handle_request_completed():
	var result = http_request.get_result()
	var response_code = http_request.get_response_code()
	var headers = http_request.get_response_headers()
	var body = http_request.get_response_body()

	_on_request_completed(result, response_code, headers, body)

# 请求完成后的实际处理
func _on_request_completed(result, response_code, headers, body):
	if response_code == 200:
		# 解析 JSON 数据
		var json_result = json.parse(body.get_string_from_utf8())
		
		if json_result == OK:
			var json_data = json.get_data()  # 获取解析后的数据
			print("解析成功:", json_data)
		else:
			print("JSON 解析失败")
	else:
		print("请求失败，状态码: ", response_code)
